import { ref } from 'vue'
import { defineStore } from 'pinia';
import { getToken, removeToken } from '@/utils/auth';
import { api } from '@/services/api';

export enum LoginStatus {
    Init,
    Waiting,
    Success,
}  

export const userLoginStore = defineStore('login', () => {

    // 是否展示登录框
    const isShowLoginBox = ref(false);
    // token
    const token = ref(getToken());
    // 登录状态
    const loginStatus = ref(LoginStatus.Init);
    
    // 如果存在token，将登录状态变为已登录
    if(token.value) {
        // 
        loginStatus.value = LoginStatus.Success;
    }
    
    // 用户注销
    const logout = async () => {
        // 调用用户注销接口
        const response = await api.common.logout();
        // 注销成功
        if(response.code === 0) {
            // 初始化登录状态
            loginStatus.value = LoginStatus.Init;
            // 移除token信息
            removeToken();
            // token设置为空
            token.value = "";
        }
    }

    return { token, isShowLoginBox, loginStatus, logout }
});